package com.sugar.follow.up.module.business.service.config;

import java.util.*;
import javax.validation.*;
import com.sugar.follow.up.module.business.controller.admin.config.vo.*;
import com.sugar.follow.up.module.business.controller.app.config.vo.AppBasicConfigRespVO;
import com.sugar.follow.up.module.business.dal.dataobject.config.BizConfigDO;
import com.sugar.follow.up.framework.common.pojo.PageResult;
import com.sugar.follow.up.framework.common.pojo.PageParam;
import com.sugar.follow.up.module.business.enums.config.ConfigEnum;

/**
 * 参数配置 Service 接口
 *
 * @author Ysugar
 */
public interface BizConfigService {

    /**
     * 更新参数配置
     *
     * @param updateReqVO 更新信息
     */
    void updateBizConfig(@Valid BizConfigSaveReqVO updateReqVO);

    /**
     * 获得参数配置
     *
     * @param id 编号
     * @return 参数配置
     */
    BizConfigDO getBizConfig(Long id);

    /**
     * 获得参数配置分页
     *
     * @param pageReqVO 分页查询
     * @return 参数配置分页
     */
    PageResult<BizConfigDO> getBizConfigPage(BizConfigPageReqVO pageReqVO);

    // ======================================== 其它 接口 ========================================

    <T> T getBizConfigByKey(ConfigEnum configEnum, Class<T> cls);

    <K, T> Map<K, T> getBizConfigMapByKeys(Class<K> kCls, Class<T> cls, ConfigEnum... configEnums);

    // ======================================== APP 接口 ========================================

    AppBasicConfigRespVO getBizConfigBasic();
}